﻿Imports Persistencia
Public Class ctrEmpresa
    Inherits ControlePadrao.ctrPadrao

#Region "Variáveis"

    Private objEmpresa As New Persistencia.perEmpresa

    Public Mensagens As String() = {"Código Obrigatório.",
                                    "Código de Endereço inválido.",
                                    "Telefone Obrigatório."}

    Public sCamposDemonstracao As String() = {"Cod", "Razão Social", "Nome Fantasia"}
    Public sCamposTabela As String() = {"codEmpresa", "razaoSocial", "nomeFantasia"}
    Public sCamposChave As String() = {"codEmpresa"}
    Public sTitulosColunas As String() = {"Código", "Razão Social", "Nome Fantasia"}

#End Region

#Region "Enumerações"

    Public Enum eMensagens
        CNPJ = 0
        COD_ENDERECO = 1
        TELEFONE = 2
    End Enum

#End Region

#Region "Propriedades"

    Public Property codEmpresa As Int32

#End Region

#Region "Métodos"

    Public Function gravarEmpresa(ByVal iCodigo As Int32,
                                   ByVal sRazaoSocial As String,
                                   ByVal sNomeFantasia As String,
                                   ByVal iCodEndereco As Int32,
                                   ByVal dCNPJ As Double,
                                   ByVal sInscMunicipal As String,
                                   ByVal sSite As String,
                                   ByVal sEmail As String,
                                   ByVal byLogo() As Byte,
                                   ByVal sTelefone As String,
                                   ByVal sInscEstadual As String,
                                   ByVal sComplemento As String,
                                   ByVal sNumero As String) As Boolean

        Dim bRetorno As Boolean = False

        Try

            MyBase.limparMensagensValidacao()

            If Me.validarEmpresa(ctrEmpresa.eTipoValidacao.GRAVACAO, iCodigo, dCNPJ, iCodEndereco, sTelefone) Then

                If iCodigo = 0 Then
                    Me.codEmpresa = Me.objEmpresa.inserirEmpresa(sRazaoSocial.Trim,
                                                                 sNomeFantasia.Trim,
                                                                 iCodEndereco,
                                                                 dCNPJ,
                                                                 sInscMunicipal.Trim,
                                                                 sInscEstadual.Trim,
                                                                 sTelefone,
                                                                 sEmail.Trim,
                                                                 sSite.Trim,
                                                                 byLogo,
                                                                 sNumero.Trim,
                                                                 sComplemento.Trim)
                Else
                    Me.objEmpresa.editarEmpresa(iCodigo, sRazaoSocial.Trim, sNomeFantasia.Trim, iCodEndereco, dCNPJ, sInscMunicipal.Trim, sTelefone, sEmail.Trim, sSite.Trim, sInscEstadual.Trim, byLogo, sNumero, sComplemento.Trim)
                    Me.codEmpresa = iCodigo
                End If

                bRetorno = True

            End If

        Catch ex As Exception

            Throw New Exception("Ocorreu um erro no método gravarEmpresa." &
                                  Environment.NewLine & ex.Message)

        End Try

        Return bRetorno

    End Function



    Public Function selecionarEmpresaCodigo(ByVal iCodEmpresa As Int32) As DataRow
        Try
            Return Me.objEmpresa.selecionarEmpresaCodigo(iCodEmpresa)
        Catch ex As Exception
            Throw New Exception("Ocorreu um erro no método selecionarEmpresaCodigo." &
                                  Environment.NewLine & ex.Message)
        End Try
    End Function

    Public Function excluirEmpresa(ByVal iCodEmpresa As Int32) As Boolean

        Dim bRetorno As Boolean = False

        Try

            If Me.validarEmpresa(eTipoValidacao.EXCLUSAO, iCodEmpresa, 0, 0, 0) Then
                Me.objEmpresa.excluirEmpresa(iCodEmpresa)
                bRetorno = True
            End If

        Catch ex As Exception
            Throw New Exception("Ocorreu um erro no método excluirEmpresa." &
                                  Environment.NewLine & ex.Message)

        End Try

        Return bRetorno

    End Function

    Private Function validarEmpresa(ByVal tipoValidacao As eTipoValidacao,
                                    ByVal iCodigo As Int32,
                                    ByVal dCnpj As Double,
                                    ByVal iCodEndereco As Int32,
                                    ByVal sTelefone As String) As Boolean

        Dim bRetorno As Boolean = True

        Try

            Select Case tipoValidacao

                Case eTipoValidacao.GRAVACAO

                    If dCnpj = 0 Then
                        MyBase.adicionarMensagensValidacao(eMensagens.CNPJ,
                                                           ctrEmpresa.eTipoLog.ERRO,
                                                            Me.Mensagens(eMensagens.CNPJ))

                    End If

                    If sTelefone = String.Empty Then
                        MyBase.adicionarMensagensValidacao(eMensagens.TELEFONE,
                                                           ctrEmpresa.eTipoLog.ERRO,
                                                           Me.Mensagens(eMensagens.TELEFONE))
                    End If

                    If iCodEndereco = 0 Then
                        MyBase.adicionarMensagensValidacao(eMensagens.COD_ENDERECO,
                                                           ctrEmpresa.eTipoLog.ERRO,
                                                           Me.Mensagens(eMensagens.COD_ENDERECO))
                    End If

                Case eTipoValidacao.EXCLUSAO

                    If Not Me.objEmpresa.validarExclusaoEmpresa(iCodigo) Then
                        MyBase.adicionarMensagensValidacao(eMensagens.CNPJ,
                                                           ctrEmpresa.eTipoLog.ERRO,
                                                           Me.Mensagens(eMensagens.CNPJ))
                    End If

            End Select

        Catch ex As Exception

            Throw New Exception("Ocorreu um erro no método validar Empresa." &
                                  Environment.NewLine & ex.Message)

        End Try

        Return bRetorno

    End Function

    Public Function selecionarEmpresa(ByVal iCod As Int32) As DataTable
        Dim objEmpresa As New perEmpresa

        Try

            Return Me.objEmpresa.selecionarEmpresa(iCod)

        Catch ex As Exception
            Throw New Exception("Erro no método selecionar Empresa." & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region

End Class
